//*********************************************************************
//  Account.java    Author: Lewis/Loftus
//
//  Represents a bank account with basic services such as deposit
//  and withdraw.
//*********************************************************************
import java.text.NumberFormat;

    public class Account
    {
        private final double RATE = 0.030; // interest rate of 3.0%

        private long acctNumber;
        private double balance;
        private String name;

        //------------------------------------------------------------------
        // Sets up the account by defining its owner, account number,
        // and initial balance.
        //------------------------------------------------------------------
        public Account(String name, long acctNumber, double balance)
        {
            this.name = name;
            this.balance = balance;
            this.acctNumber = acctNumber;
        }

        //------------------------------------------------------------------
        // Deposits the specified amount into the account. Returns the
        // new balance.
        //------------------------------------------------------------------
        public double deposit(double amount)
        {
            balance = balance + amount;
            return balance;
        }

        //------------------------------------------------------------------
        // Withdraws the specified amount from the account and applies
        // the fee, Returns the new balance.
        //------------------------------------------------------------------
        public double withdraw(double amount, double fee)
        {
            balance = balance - amount - fee;

            return balance;
        }

        //------------------------------------------------------------------
        // Adds interest to the amount and returns the new balance.
        //------------------------------------------------------------------
        public double addInterest()
        {
            balance += (balance * RATE);
            return balance;
        }

        //------------------------------------------------------------------
        // Returns the current balance of the account.
        //------------------------------------------------------------------
        public double getBalance()
        {
            return balance;
        }

        //------------------------------------------------------------------
        // Returns a one-line description of the account as a string.
        //------------------------------------------------------------------
        public String toString()
        {
            NumberFormat fmt = NumberFormat.getCurrencyInstance();
            return acctNumber + "\t" + name + "\t" + fmt.format(balance);
        }
    }
